# NamingConfiguration.java

    package org.codefilarete.stalactite.engine.configurer;

    import org.codefilarete.stalactite.dsl.naming.AssociationTableNamingStrategy;
    import org.codefilarete.stalactite.dsl.naming.ColumnNamingStrategy;
    import org.codefilarete.stalactite.dsl.naming.ElementCollectionTableNamingStrategy;
    import org.codefilarete.stalactite.dsl.naming.ForeignKeyNamingStrategy;
    import org.codefilarete.stalactite.dsl.naming.UniqueConstraintNamingStrategy;
    import org.codefilarete.stalactite.dsl.naming.JoinColumnNamingStrategy;
    import org.codefilarete.stalactite.dsl.naming.MapEntryTableNamingStrategy;
    import org.codefilarete.stalactite.dsl.naming.TableNamingStrategy;

    /**
     * Storage for all naming strategy.
     * Made to avoid having all those attributes in every class that requires them.
     *
     * @author Guillaume Mary
     */
    public class NamingConfiguration {

    	private final TableNamingStrategy tableNamingStrategy;
    	private final ColumnNamingStrategy columnNamingStrategy;
    	private final ForeignKeyNamingStrategy foreignKeyNamingStrategy;
    	private final UniqueConstraintNamingStrategy uniqueConstraintNamingStrategy;
    	private final ElementCollectionTableNamingStrategy elementCollectionTableNamingStrategy;
    	private final MapEntryTableNamingStrategy mapEntryTableNamingStrategy;
    	private final JoinColumnNamingStrategy joinColumnNamingStrategy;
    	private final ColumnNamingStrategy indexColumnNamingStrategy;
    	private final AssociationTableNamingStrategy associationTableNamingStrategy;

    	public NamingConfiguration(TableNamingStrategy tableNamingStrategy,
    							   ColumnNamingStrategy columnNamingStrategy,
    							   ForeignKeyNamingStrategy foreignKeyNamingStrategy,
    							   UniqueConstraintNamingStrategy uniqueConstraintNamingStrategy,
    							   ElementCollectionTableNamingStrategy elementCollectionTableNamingStrategy,
    							   MapEntryTableNamingStrategy mapEntryTableNamingStrategy,
    							   JoinColumnNamingStrategy joinColumnNamingStrategy,
    							   ColumnNamingStrategy indexColumnNamingStrategy,
    							   AssociationTableNamingStrategy associationTableNamingStrategy) {
    		this.tableNamingStrategy = tableNamingStrategy;
    		this.columnNamingStrategy = columnNamingStrategy;
    		this.foreignKeyNamingStrategy = foreignKeyNamingStrategy;
    		this.uniqueConstraintNamingStrategy = uniqueConstraintNamingStrategy;
    		this.elementCollectionTableNamingStrategy = elementCollectionTableNamingStrategy;
    		this.mapEntryTableNamingStrategy = mapEntryTableNamingStrategy;
    		this.joinColumnNamingStrategy = joinColumnNamingStrategy;
    		this.indexColumnNamingStrategy = indexColumnNamingStrategy;
    		this.associationTableNamingStrategy = associationTableNamingStrategy;
    	}

    	public TableNamingStrategy getTableNamingStrategy() {
    		return tableNamingStrategy;
    	}

    	public ColumnNamingStrategy getColumnNamingStrategy() {
    		return columnNamingStrategy;
    	}

    	public ForeignKeyNamingStrategy getForeignKeyNamingStrategy() {
    		return foreignKeyNamingStrategy;
    	}

    	public UniqueConstraintNamingStrategy getUniqueConstraintNamingStrategy() {
    		return uniqueConstraintNamingStrategy;
    	}

    	public UniqueConstraintNamingStrategy getIndexNamingStrategy() {
    		return uniqueConstraintNamingStrategy;
    	}

    	public ElementCollectionTableNamingStrategy getElementCollectionTableNamingStrategy() {
    		return elementCollectionTableNamingStrategy;
    	}

    	public MapEntryTableNamingStrategy getEntryMapTableNamingStrategy() {
    		return mapEntryTableNamingStrategy;
    	}

    	public JoinColumnNamingStrategy getJoinColumnNamingStrategy() {
    		return joinColumnNamingStrategy;
    	}

    	public ColumnNamingStrategy getIndexColumnNamingStrategy() {
    		return indexColumnNamingStrategy;
    	}

    	public AssociationTableNamingStrategy getAssociationTableNamingStrategy() {
    		return associationTableNamingStrategy;
    	}
    }